#pragma once
#include<glad/glad.h>
#include <GLFW/glfw3.h>
#include<iostream>
#include <cstdint>
#include<fstream>
#include<sstream>
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include <glm/gtc/type_ptr.hpp>
class GLTools
{
public:
	static uint32_t compileVectexShader(const std::string& source);
	static uint32_t compileFragmentShader(const std::string& source);

	static uint32_t compileVectexShader(const char* vectex_shader_source);
	static uint32_t compileFragmentShader(const char* fragment_shader_source);
	static uint32_t createProgram();
	static void bindAndLinkProgram(uint32_t shader_program, uint32_t vectex_shader, uint32_t fragment_shader);
	static void deleteShader(uint32_t& shader);

	static uint32_t loadExampleTexture(const std::string& img_path_name);
	static void printMat4(glm::mat4& mat);
};

